package com.example.demo.dao;


import com.example.demo.entity.CertificateEneity;
import com.example.demo.entity.RegisterEntity;
import com.example.demo.result.Result;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RegisterDao {

     List<RegisterEntity> getRegisterData(RegisterEntity registerEntity);

     boolean registerData(RegisterEntity registerEntity);

     //查询当前数据库总数
     Integer selectCount ();

     //根据给定id修改数据
     boolean insertUrl(@Param("photoUrl") String url , @Param("serialNumber") String serialNumber );

     //查询体检编号是否存在
     Integer selectNumber(String serialNumber);

     //通过体检编号查询id
     Integer selectIdByNumber(String serialNumber);

//     //通过给定区间查询数据
//     List<RegisterEntity> selectRange(@Param("startRow")int startRow , @Param("count")int count);
     //通过给定日期区间查询数据
     //查询该区间内第一条数据的id
     int selectTheFirst(String startDate);

     //查询该区间内最后一条数据的id
     int  selectTheEnd(String endDate);
     //根据区间查询数据
     List<RegisterEntity> selectRange(@Param("first")int first , @Param("end")int end  ,@Param("limitF") int limitF ,@Param("limitE") int limitE);
     //查询行业或工种
     List<String> selectWorkType();
     List<String> selectIndustry();

     //成功制证
     void successCertify(String sercialNumber);

     //获取未制证人员信息
     List<RegisterEntity> getWhetherCertify(@Param("first") int first , @Param("end") int end);

     //获取未制证人员总数
     int selectWithoutCertifyCount ();

     //通过编号查询数据
     RegisterEntity selectDataById(String serialNumber);

     //查询当前日期是否有登记数据
     Integer selectByDate (String registerDate);

     //根据编号区间查询数据
     List<RegisterEntity> getDataBySerNumberRange( @Param("firstI") int firstId , @Param("endI") int endId ,@Param("pageI") int pageIndex,@Param("pageS") int pageSize);

     //根据编号查询对应id
     int getIdBySerNumber(String serialNumber);

     //查询编号区间数据总数
     int selectCountByRange(@Param("firstI") int first ,@Param("endI")int end);

     //根据编号查询照片路径
     String selectUrl(String serialNumber);

     //获取已制证人员信息
     List<RegisterEntity> getCertified (@Param("limitF")int limitFirst,@Param("limitE") int limitEnd);

     //获取已制证人员总数
     int getCertifiedCount();

     //根据给定日期区间查询已制证人员信息
     //根据日期查询对应id
     //起始日期第一条数据的编号
     String selectFirstNumberByDate(String registerDate);
     //截止日期的最后一个编号
     String selectEndNumberByDate(String registerDate);
     //根据id查询已制证人员信息
     List<RegisterEntity> getCertifiedRange(@Param("limitF")int limitF,@Param("limitE")int limitE,@Param("firstI") int firstId,@Param("endId") int endId);
//     查询编号区间内符合要求数据总数
     int getCertifiedRangeCount(@Param("firstI") int firstId,@Param("endI") int endId);
//     查询当前日期是否存在数据
     Integer selectDataByDate(String registerDate);

     void afterCertificate(@Param("expirationDate") String expirationDate ,@Param("serialNumber") String serialNumber);

     List<RegisterEntity> selectByDateRange(@Param("startD")String startDate,@Param("endD") String endDate,@Param("limitF")int limitFirst,@Param("limitE")int limitEnd);

     List<RegisterEntity> selectBySerialNumRange(@Param("startS")String startNumber , @Param("endS") String endNumber,@Param("limitF")int limitFirst,@Param("limitE")int limitEnd);

     int selectCountBySerialNumberRnage(@Param("startS")String startNumber,@Param("endS")String endNumber);

     int selectCountByDateRange(@Param("startD")String startDate,@Param("endD") String endDate);

     //根据日期区间查询已制证人员
     List<RegisterEntity> selectCertificateByDate(@Param("startD")String startDate , @Param("endD")String endDate,@Param("limitF")int limitFirst,@Param("limitE")int limitEnd);

     //根据日期区间查询已制证人员总数
     int selectCertificateCountByDate(@Param("startD")String startDate,@Param("endD")String endDate);

     //根据编号区间查询已制证人员信息
     List<RegisterEntity> selectCertificateBySerialNum(@Param("startS")String startNumber , @Param("endS") String endNumber,@Param("limitF")int limitFirst,@Param("limitE")int limitEnd);
     //根据编号区间查询已制证人员总数
     int selectCertificateCountBySerilNum(@Param("startS")String startNumber,@Param("endS")String endNumber);

     RegisterEntity selectBySerialNumber (String serialNumber);

     List<RegisterEntity> seniorSelect(RegisterEntity registerEntity);

     int seniorCountSelect(RegisterEntity registerEntity);

     List<RegisterEntity> seniorSelectCertify(RegisterEntity registerEntity);
     Integer seniorCountSelectCertify (RegisterEntity registerEntity);

     //根据姓名查询
     List<RegisterEntity> selectByName(String name);
     List<RegisterEntity> selectCertifyByName(String name);

     //修改登记信息
     boolean updateRegisterMsg(RegisterEntity registerEntity);

}
